
#ifndef ICOMPARER_T_H
#define ICOMPARER_T_H

// C# includes.
#include <Typedef.h>
#include <Defines.h>
#include <CSharpPropertyMethods.h>

// Riccsson includes.
#include <System/Object.h>

namespace Riccsson
{
	namespace System
	{
		namespace Collections
		{
			namespace Generic
			{
				// Summary:
				//     Defines a method that a type implements to compare two objects.
				//
				// Type parameters:
				//   T:
				//     The type of objects to compare.This type parameter is contravariant. That
				//     is, you can use either the type you specified or any type that is less derived.
				//     For more information about covariance and contravariance, see Covariance
				//     and Contravariance in Generics.
				template<typename T> interface IComparer/*<in T>*/
				{
					// Summary:
					//     Compares two objects and returns a value indicating whether one is less than,
					//     equal to, or greater than the other.
					//
					// Parameters:
					//   x:
					//     The first object to compare.
					//
					//   y:
					//     The second object to compare.
					//
					// Returns:
					//     A signed integer that indicates the relative values of x and y, as shown
					//     in the following table.Value Meaning Less than zerox is less than y.Zerox
					//     equals y.Greater than zerox is greater than y.
					virtual int Compare(T* x, T* y) = 0;
				};
			}
		}
	}
}

#endif // IENUMERATOR_H